/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ufps.cuatro.modelo.asistente.clase.simple;

import com.ufps.cuatro.controlador.render.UtilRender;
import com.ufps.cuatro.modelo.representacion.ObjetoTipoDatoReflexion;
import com.ufps.cuatro.util.wizard.ObjectTempSwapWizard;
import com.ufps.cuatro.util.wizard.UtilWizard;
import com.ufps.cuatro.util.wizard.WizardPanelDescriptor;
import com.ufps.cuatro.vistas.asistente.clase.simple.JPanelWizardClaseSimpleFinish;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 *
 * @author Carlos A. Torres C. 
 */
public class JPanelWizardClaseSimpleFinishDescriptor extends WizardPanelDescriptor implements ActionListener {
    
    public static final String IDENTIFIER = "ONLY";
    private JPanelWizardClaseSimpleFinish objPanel;
    private ObjetoTipoDatoReflexion objTipoDato;
    
    public JPanelWizardClaseSimpleFinishDescriptor(ObjetoTipoDatoReflexion objTipoDato) {        
//      if(objTipoDato != null){
            this.objTipoDato = objTipoDato;
            objPanel = new JPanelWizardClaseSimpleFinish(objTipoDato);
            objPanel.addCheckBoxActionListener(JPanelWizardClaseSimpleFinishDescriptor.this);
            setPanelDescriptorIdentifier(IDENTIFIER);
            setPanelComponent(objPanel);
//        }else{
//                UtilRender.printlnConsole("Objeto tipo dato Nulo.", UtilRender.ACTION_NORMAL, false);            
//            }
    }
    
    @Override
    public void displayingPanel() {
//        try{}catch(java.lang.NullPointerException ex){}
    }
    
    @Override
    public Object getNextPanelDescriptor() {
        return JPanelWizardClaseSimpleFinishDescriptor.FINISH;
    }
    
    @Override
    public Object getBackPanelDescriptor() {
        return null;
    } 
    
    @Override
    public void aboutToDisplayPanel() {
//       try{
        setNextButtonAccordingToCheckBox();
//        }catch(java.lang.NullPointerException ex){}
    }    
    
    public void actionPerformed(ActionEvent e) {
//       if(e != null){
            setNextButtonAccordingToCheckBox();
//        } 
    }          
    
    private void setNextButtonAccordingToCheckBox() {
         if (objPanel.isCheckBoxSelected()){
             if(objPanel.isListEmpty() && objPanel.getObjMetodosAgregados().isEmpty()){
                 UtilRender.msgAdvertencia("No puede generar un Componente Vacio.", objPanel);
                 return;
             }
             getWizard().setNextFinishButtonEnabled(true);
             procesarConfiguracion();
         }
         else{
             getWizard().setNextFinishButtonEnabled(false);             
         }           
    }     
    
    private void procesarConfiguracion() {   
        ObjectTempSwapWizard objSwap = new ObjectTempSwapWizard(UtilWizard.WIZARD_CLASS); 
        objSwap.setObj(objTipoDato);
        objSwap.add(ObjectTempSwapWizard.COLECCION, objPanel.getObjMetodosAgregados());
        UtilWizard.objTempSwap = objSwap;
        System.out.println("Configuración Procesada en el Objeto de Intercambio....");
    }
}
